package com.uobgroup.ews.uam.core.dao;

import java.util.List;

import com.uobgroup.ews.uam.core.domain.ReferenceType;
import com.uobgroup.ews.uam.core.enums.ScopeType;

public interface ReferenceTypeDao extends GenericDao<ReferenceType> {

   public List<ReferenceType> findReferenceTypesByScope(ScopeType scope);
   
   public ReferenceType findReferenceTypeByIdAndScope(Long id, ScopeType scope);
   
   public List<ReferenceType> findReferenceTypesByScope(ScopeType scope, int firstResult, int maxResults);
   
   public long countReferenceTypesByScope(ScopeType scope);
   
   public ReferenceType findReferenceTypeByNameAndScope(String name, ScopeType scope);
   
   public ReferenceType findReferenceTypeByName(String name);
   
   public ReferenceType findReferenceTypeByCode(String code);
   
   public ReferenceType findReferenceTypeThatHasNameAndNotHasId(String name, Long id);
   
   public ReferenceType findReferenceTypeThatHasCodeAndNotHasId(String code, Long id);

   public ReferenceType findReferenceTypeByCodeAndScope(String code, ScopeType scope);
   
}
